"""爱因斯坦的思考题
这是一个很有趣的逻辑推理题，传说是爱因斯坦提出来的，他宣称世界上只有2％的人能解出这个题目，
传说不一定属实，但是这个推理题还是很有意思的。
题目是这样的，据说有五个不同颜色的房间排成一排，每个房间里分别住着一个不同国籍的人，
每个人都喝一种特定品牌的饮料，抽一种特定品牌的烟，养一种宠物，没有任意两个人抽相同品牌的香烟，
或喝相同品牌的饮料，或养相同的宠物，问题是谁在养鱼作为宠物？

为了寻找答案，爱因斯坦给出了十五条线索：

(1)、英国人住在红色的房子里；
(2)、瑞典人养狗作为宠物；
(3)、丹麦人喝茶；
(4)、绿房子紧挨着白房子，在白房子的左边；
(5)、绿房子的主人喝咖啡；
(6)、抽PallMall牌香烟的人养鸟；
(7)、黄色房子里的人抽Dunhill牌香烟；
(8)、住在中间那个房子里的人喝牛奶；
(9)、挪威人住在第一个房子里面；
(10)、抽Blends牌香烟的人和养猫的人相邻；
(11)、养马的人和抽Dunhill牌香烟的人相邻；
(12)、抽BlueMaster牌香烟的人喝啤酒；
(13)、德国人抽Prince牌香烟；
(14)、挪威人和住在蓝房子的人相邻；
(15)、抽Blends牌香烟的人和喝矿泉水的人相邻。
"""

import itertools
import sys

country = ['英国人', '瑞典人', '丹麦人', '挪威人', '德国人']
house = ['红房子', '白房子', '绿房子', '黄房子', '蓝房子']
drink = ['茶', '咖啡', '牛奶', '啤酒', '矿泉水']
smoke = ['PallMall', 'Dunhill', 'Blends', 'BlueMaster', 'Prince']
pet = ['狗', '鸟', '猫', '马', '鱼']

country_list = list(itertools.permutations(country))
# (9)、挪威人住在第一个房子里面；
for x in country_list[:]:
    if x.index('挪威人') not in [0, 4]:
        country_list.remove(x)

house_list = list(itertools.permutations(house))
#(4)、绿房子紧挨着白房子，在白房子的左边；
for x in house_list[:]:
   if x.index('绿房子') - x.index('白房子') not in [-1, 1]:
       house_list.remove(x)

#(8)、住在中间那个房子里的人喝牛奶；
drink_list = [x for x in list(itertools.permutations(drink)) if x[2]=='牛奶']

smoke_list = list(itertools.permutations(smoke))
pet_list = list(itertools.permutations(pet))

a = []
for c in country_list:
    for h in house_list:
        if c.index('英国人')!=h.index('红房子'):
            # (1)、英国人住在红色的房子里；
            continue
        if c.index('挪威人') - h.index('蓝房子') not in [-1, 1]:
            #(14)、挪威人和住在蓝房子的人相邻；
            continue
        for d in drink_list:
            if c.index('丹麦人') != d.index('茶'):
                # (3)、丹麦人喝茶；
                continue
            if h.index('绿房子') != d.index('咖啡'):
                # (5)、绿房子的主人喝咖啡；
                continue

            for s in smoke_list:
                if c.index('德国人') != s.index('Prince'):
                    # (13)、德国人抽Prince牌香烟；
                    continue
                if h.index('黄房子') != s.index('Dunhill'):
                    # (7)、黄色房子里的人抽Dunhill牌香烟；
                    continue
                if d.index('啤酒') != s.index('BlueMaster'):
                    # (12)、抽BlueMaster牌香烟的人喝啤酒；
                    continue
                if d.index('矿泉水') - s.index('Blends') not in [-1, 1]:
                    # (15)、抽Blends牌香烟的人和喝矿泉水的人相邻。
                    continue
                for p in pet_list:
                    if c.index('瑞典人') != p.index('狗'):
                        # (2)、瑞典人养狗作为宠物；
                        continue
                    if s.index('PallMall') != p.index('鸟'):
                        # (6)、抽PallMall牌香烟的人养鸟；
                        continue
                    if s.index('Blends') - p.index('猫') not in [-1, 1]:
                        # (10)、抽Blends牌香烟的人和养猫的人相邻；
                        continue
                    if s.index('Dunhill') - p.index('马') not in [-1, 1]:
                        # (11)、养马的人和抽Dunhill牌香烟的人相邻；
                        continue

                    plan = [c, h, d, s, p]
                    print(c[p.index('鱼')])
                    sys.exit()